import router from "@/router";
import storage from "./storage";
import store from "@/store";

//判断依据：本地是否有token，如果有，就放行
router.beforeEach((to, from, next) => {
  let token = storage.get("qf-token");
  // console.log(to)
  // to  目标路由对象
  //from  源路由对象
  //next  是个函数，调用之后，可以理解为放行
  if (token) {
    //已经登入，直接放行
    // next();
    //判断是否有用户菜单
    if (!store.state.permission.userMenu.length) {
      console.log(store.state.permission.userMenu);
      //发起请求，获取远程菜单
      store.dispatch("permission/FETCH_MENU_LIST").then(() => {
        //必须把之前进入的路由全部废弃，进入新的路由
        //注意！！！next里面要传参数，即要进入页面的路由信息，因为next传参后，当前要进入的路由就会被废止，转而进入参数对应的路由，虽然是同一个路由，这么做主要是为了确保addRoutes生效，并且不产生历史记录
        next({ path: to.path, replace: true });
      });
    } else {
      next();
    }
  } else {
    //没有token
    //1.访问的是登入页面
    if (to.path === "/login") {
      next();
    } else {
      // 2.访问的不是登入页面，强行调回登入页面
      next({ path: "/login" });
    }
  }
});

export default router;
